package com.gaojinqi.sys.modular.rbac.service;

import com.gaojinqi.base.common.service.BaseTreeService;
import com.gaojinqi.sys.modular.rbac.model.Permission;

import java.util.Collection;
import java.util.List;

/**
 * 权限 - 业务逻辑层接口
 *
 * @author gaojinqi
 * @version 1.0
 * @since 2020年04月21日
 */
public interface PermissionService extends BaseTreeService<Permission, String> {

    /**
     * 根据角色ID查询可用的关联权限
     */
    List<Permission> findEnablePermsByRoleId(String roleId);

    /**
     * 根据角色ID集合查询可用的关联权限
     */
    List<Permission> findEnablePermsByRoleId(Collection<String> roleIds);

    /**
     * 根据权限编码查询权限
     */
    Permission findByPermission(String permission);

    /**
     * 查询所有权限
     */
    List<Permission> findAll();

    /**
     * 根据角色ID集合查询关联权限
     */
    List<Permission> findPermsByRoleId(String roleId);

    /**
     * 给指定角色分配权限
     */
    void assignPermsToRoleId(String roleId, Collection<String> permIds);

}
